<?php

/**
 * This is the model class for table "mb_services".
 *
 * The followings are the available columns in table 'mb_services':
 * @property string $serviceId
 * @property string $serviceTitle
 * @property string $serviceWarranty
 * @property string $serviceTime
 */
class Services extends CActiveRecord {

	/**
	 * @return string the associated database table name
	 */
	public function tableName() {
		return 'mb_services';
	}

	/**
	 * @return array validation rules for model attributes.
	 */
	public function rules() {
		// NOTE: you should only define rules for those attributes that
		// will receive user inputs.
		return array(
			array('serviceTitle, serviceTime, serviceWarranty, serviceType, serviceCategory', 'required'),
			array('serviceDescription', 'default'),
			array('serviceTitle', 'length', 'max' => 255),
			//array('serviceWarranty, serviceTime', 'length', 'max'=>20),
			// The following rule is used by search().
			// @todo Please remove those attributes that should not be searched.
			array('serviceId, serviceTitle, serviceWarranty, serviceTime, serviceCategory, serviceDescription', 'safe', 'on' => 'search'),
		);
	}

	/**
	 * @return array relational rules.
	 */
	public function relations() {
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
			'category' => array(self::BELONGS_TO, 'Page', 'serviceCategory'),
		);
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels() {
		return array(
			'serviceId' => 'ID',
			'serviceCategory' => 'Категория',
			'serviceTitle' => 'Наименование услуги',
			'serviceWarranty' => 'Гарантия',
			'serviceTime' => 'Сделаем за',
			'serviceType' => 'Тип услуги',
			'serviceParts' => 'Запчасти',
			'serviceDescription'=>'Описание'
		);
	}

	/**
	 * Retrieves a list of models based on the current search/filter conditions.
	 *
	 * Typical usecase:
	 * - Initialize the model fields with values from filter form.
	 * - Execute this method to get CActiveDataProvider instance which will filter
	 * models according to data in model fields.
	 * - Pass data provider to CGridView, CListView or any similar widget.
	 *
	 * @return CActiveDataProvider the data provider that can return the models
	 * based on the search/filter conditions.
	 */
	public function search() {
		// @todo Please modify the following code to remove attributes that should not be searched.

		$criteria = new CDbCriteria;
		$criteria->order = '"serviceId" desc';
		$criteria->compare('"serviceId"', $this->serviceId);
		$criteria->compare('"serviceCategory"', $this->serviceCategory);
		$criteria->compare('"serviceTitle"', $this->serviceTitle, true);
		$criteria->compare('"serviceWarranty"', $this->serviceWarranty, true);
		$criteria->compare('"serviceTime"', $this->serviceTime, true);
		$criteria->compare('"serviceDescription"', $this->serviceDescription, true);

		return new CActiveDataProvider($this, array(
			'criteria' => $criteria, 'pagination' => array('pageSize' => 100,)
		));
	}

	public function getParts() {
		$return = array();
		$models = Parts::model()->findAll();
		foreach ($models as $model) {
			$array['id'] = CHtml::encode($model['partId']);
			$array['title'] = CHtml::encode($model['partTitle']);
			$return[] = $array;
		}
		return json_encode($return, 1);
	}

	/**
	 * Returns the static model of the specified AR class.
	 * Please note that you should have this exact method in all your CActiveRecord descendants!
	 * @param string $className active record class name.
	 * @return Services the static model class
	 */
	public static function model($className = __CLASS__) {
		return parent::model($className);
	}

	public function beforeSave() {
		if (parent::beforeSave()) {
			if (isset($_POST['Services']['serviceParts'])) {
				$array = json_decode($_POST['Services']['serviceParts']);
				$this->serviceParts = implode(',', $array);
			}
			return true;
		}
		return FALSE;
	}

}
